#ifndef _LAMBDA_H_
#define _LAMBDA_H_
#include "python3/PythonGrammar30TreeConstants.h"
#include "ast/exprType.h"
#include "ast/argumentsType.h"
#include "AstTypes.h"
class IVisitor;
class Lambda;
typedef QSharedPointer<Lambda> LambdaPtr;

class Lambda: public exprType
{
public:
    explicit Lambda(const argumentsTypePtr& args, const exprTypePtr& body, int nodeId=JJTLAMBDEF);
    virtual ~Lambda();
    
    
    argumentsTypePtr args();
    void setArgs(const argumentsTypePtr& args);
    
    exprTypePtr body();
    void setBody(const exprTypePtr& body);
    
    
    virtual Ast::AstTypes type() const;
    virtual QString toString() const;
    virtual void accept(IVisitor* visitor, const SimpleNodePtr& node);
    virtual void traverse(IVisitor* visitor);
private:
    argumentsTypePtr _args;
    exprTypePtr _body;
};




#endif